package com.aaa.ssm.controller;

import com.aaa.ssm.entity.User;
import com.aaa.ssm.service.CommonFileHandlerService;
import com.aaa.ssm.service.UserService;
import com.aaa.ssm.util.Page;
import com.aaa.ssm.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

@RestController  // @ResponseBody+@Controller
@RequestMapping("/user") //父路径映射//@ResponseBody 响应体  String 框架会帮我们把后端返回的对象或者集合 转化为JSON字符串(放入响应的body部门)
//一旦加上该注解，就不再走视图解析器
//支持任何请求 加上method后就限制改请求只可以使GET请求---改变请求方式-只需将GET变为POST/PUT/delete 就可以
public class UserController extends BaseController{
    @Resource //依赖注入
    private UserService userService;
    @Resource
   /* @Autowired
    @Qualifier*/
    private CommonFileHandlerService commonFileHandlerService;
    /**
     * 分页带参查询
     * @param page
     * @return
     */
    //@RequestMapping(value = "queryPage",method = RequestMethod.GET)
    //获取资源映射   post请求 @PostMapping  get请求 @GetMapping  put 请求 @PutMapping
    @PostMapping("queryPage") //@RequestBody 请求体  String框架会帮我们把前端传过来的JSON字符串（放入请求的body部分），转换为对象或者集合
    public Result queryPage(@RequestBody Page<User> page){
        return success(userService.queryPage(page));
    }

    /**
     * 文件上传对象  必须使用@RequestParam绑定上传对象,不可以少，少了上传不了
     * MultipartFile
     * @param file1
     * @return
     */
    @PostMapping("uploadFile")
    public Result uploadFile(@RequestParam MultipartFile file1){
        //调用封装的服务接口
        return success(commonFileHandlerService.uploadFile(file1,"user/pic/"));
    }

    /**
     * 根据编号查询
     * @param userId
     * @return
     */
    @PostMapping("queryById")
    public Result queryById(Integer userId){
        return success(userService.queryById(userId));
    }

    /**
     * 添加数据
     * @param user
     * @return
     */
    @PostMapping("add")
    public Result add(@RequestBody User user){

        return success(userService.add(user));
    }

    /**
     * 更新数据
     * @param user
     * @return
     */
    @PostMapping("update")
    public Result update(@RequestBody User user){
        return success(userService.update(user));
    }

    /**
     * 根据编号删除数据
     * @param userId
     * @return
     */
    @PostMapping("delete/{userId}")  //post请求
    //携带路径
    public Result delete(@PathVariable("userId")Integer userId){
        return success(userService.deleteById(userId));
    }
    /**
     * 获取登录会话信息
     * @return
     */
    @GetMapping("/getLoginSession")
    public  Result  getLoginSession11(HttpSession session) {
        System.out.println("---------------------------"+(User) session.getAttribute("userInfo"));
        return success((User) session.getAttribute("userInfo"));
    }
    /**
     * 退出方法
     * @param session
     */
    @PostMapping("/logout")
    public void logout(HttpSession session) {
        session.removeAttribute("loginA");
        session.removeAttribute("userInfo");
    }
}
